package colecoes;

import interfaces.InterfacePessoaJuridica;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Vector;

import javax.swing.JOptionPane;

import fachada.JDBC;

import basicas.PessoaJuridica;

public class ColPessoaJuridica implements InterfacePessoaJuridica {
	
	Vector juridicas = new Vector();
	
	public void cadastrarPessoaJuridica(PessoaJuridica J) throws ClassNotFoundException, SQLException{
		String sql = "insert into pessoajuridica (email, codendereco, telefone, telefone2, razaosocial, nomefantasia, cnpj, nomecontrato, login, senha) values ('"+
		J.getEmail()+"',"+
		J.getEnd().getCodEndereco()+",'"+
		J.getTelefone()+"','"+
		J.getTelefone2()+"','"+
		J.getRazaoSocial()+"','"+
		J.getNomeFantasia()+"','"+
		J.getCnpj()+"','"+
		J.getNomeContrato()+"','"+
		J.getLogin()+"',"+"encrypt('"+
		J.getSenha()+"'"+","+"'"+"fooz" +"'"+","+"'"+"aes"+"'));";
		
		Statement conexao = JDBC.getsStatement();
		conexao.execute(sql);
		conexao.close();
	}
	
	
	public PessoaJuridica consultaPessoaJuridica(int codigo) 
	throws ClassNotFoundException, SQLException{
		String sql = "SELECT *FROM pessoajuridica WHERE codjuridica = " +codigo+";";
		Statement conexao = JDBC.getsStatement();
		ResultSet resultado = conexao.executeQuery(sql);
		
		ColEndereco ce = new ColEndereco();
		
		while (resultado.next()) {
			PessoaJuridica pJuridica = new PessoaJuridica();
			pJuridica.setEmail(resultado.getString("email"));
			int codEndereco = resultado.getInt("codendereco");
			pJuridica.setEnd(ce.consultarEndereco(codEndereco));
			pJuridica.setTelefone(resultado.getString("telefone"));
			pJuridica.setTelefone2(resultado.getString("telefone2"));
			pJuridica.setRazaoSocial(resultado.getString("razaosocial"));
			pJuridica.setNomeFantasia(resultado.getString("nomefantasia"));
			pJuridica.setCnpj(resultado.getString("cnpj"));
			pJuridica.setNomeContrato(resultado.getString("nomecontrato"));
			return pJuridica;
		}
		conexao.close();
		return null;
	}
	
	public PessoaJuridica consultaJuridicaNome(String nome) 
	throws ClassNotFoundException, SQLException{
		String sql = "SELECT *FROM pessoajuridica WHERE nomecontrato = " +nome+";";
		Statement conexao = JDBC.getsStatement();
		ResultSet resultado = conexao.executeQuery(sql);
		
		ColEndereco ce = new ColEndereco();
		
		while (resultado.next()) {
			PessoaJuridica pJuridica = new PessoaJuridica();
			pJuridica.setEmail(resultado.getString("email"));
			int codEndereco = resultado.getInt("codEndereco");
			pJuridica.setEnd(ce.consultarEndereco(codEndereco));
			pJuridica.setTelefone(resultado.getString("telefone"));
			pJuridica.setTelefone2(resultado.getString("telefone2"));
			pJuridica.setRazaoSocial(resultado.getString("razaosocial"));
			pJuridica.setNomeFantasia(resultado.getString("nomefantasia"));
			pJuridica.setCnpj(resultado.getString("cnpj"));
			pJuridica.setNomeContrato(resultado.getString("nomecontrato"));
			return pJuridica;
		}
		conexao.close();
		return null;
	}

	
	public Vector consultaJuridicaFiltrada(String nome) 
	throws ClassNotFoundException, SQLException{
		String sql = "SELECT *FROM pessoajuridica WHERE nome ILIKE " + "'" + "%"  +nome+ "%" + "'" + ";";
		Statement conexao = JDBC.getsStatement();
		ResultSet resultado = conexao.executeQuery(sql);
		
		ColEndereco ce = new ColEndereco();
		
		while (resultado.next()) {
			PessoaJuridica pJuridica = new PessoaJuridica();
			pJuridica.setEmail(resultado.getString("email"));
			int codEndereco = resultado.getInt("codEndereco");
			pJuridica.setEnd(ce.consultarEndereco(codEndereco));
			pJuridica.setTelefone(resultado.getString("telefone"));
			pJuridica.setTelefone2(resultado.getString("telefone2"));
			pJuridica.setRazaoSocial(resultado.getString("razaoSocial"));
			pJuridica.setNomeFantasia(resultado.getString("nomefantasia"));
			pJuridica.setCnpj(resultado.getString("cnpj"));
			pJuridica.setNomeContrato(resultado.getString("nomefantasia"));
			juridicas.add(pJuridica);
		}
		conexao.close();
		return juridicas;
	}

	
	public Vector listarPessoaJuridica() 
	throws ClassNotFoundException, SQLException{
		String sql = "SELECT *FROM pessoajuridica;";
		Statement conexao = JDBC.getsStatement();
		ResultSet resultado = conexao.executeQuery(sql);
		
		while(resultado.next()){
			PessoaJuridica pj = new PessoaJuridica();
			ColEndereco ce = new ColEndereco();
			pj.setEmail(resultado.getString("email"));
			int codEndereco = resultado.getInt("codEndereco");
			pj.setEnd(ce.consultarEndereco(codEndereco));
			pj.setTelefone(resultado.getString("telefone"));
			pj.setTelefone2(resultado.getString("telefone2"));
			pj.setRazaoSocial(resultado.getString("razaoSocial"));
			pj.setNomeFantasia(resultado.getString("nomefantasia"));
			pj.setCnpj(resultado.getString("cnpj"));
			pj.setNomeContrato(resultado.getString("nomefantasia"));
			juridicas.add(pj);
		}
		conexao.close();
		return juridicas;
	}
	
	
	public void removerPessoaJuridica(int codigo) 
	throws ClassNotFoundException, SQLException{
		String sql = "DELETE FROM pessoajuridica where codjuridica = "+codigo+";";
		Statement conexao = JDBC.getsStatement();
		conexao.executeUpdate(sql);
		conexao.close();
	}
	
	
	public void editarPessoaJuridica(int codigo, String email, String telefone, String telefone2, String razaoSocial, String nomeFantasia, String CNPJ, String nomeContrato, String login, String senha) 
	throws ClassNotFoundException, SQLException{
		String sql = "UPDATE pessoajuridica SET email = '"+email+"', telefone = '"+telefone+"', telefone2 = '"+telefone2+"', razaoSocial = '"+razaoSocial+"', nomefantasia = '"+nomeFantasia+"', cnpj = '"+CNPJ+"', nomecontrato = '"+nomeContrato+"', login = '"+login+"', senha = encrypt ('"+senha+"',"+"'"+"fooz" +"'"+","+"'"+"aes"+"') WHERE codjuridica = "+codigo+";";
		Statement conexao = JDBC.getsStatement();
		conexao.executeUpdate(sql);
		conexao.close();
	}
	
	
	public void verificaCnpjExiste(String CNPJ) 
	throws ClassNotFoundException, SQLException{
		String sql = "SELECT cnpj FROM pessoajuridica WHERE cnpj = '"+CNPJ+"';";
		Statement conexao = JDBC.getsStatement();
		ResultSet resultado = conexao.executeQuery(sql);
		
		while (resultado.next()){
			PessoaJuridica pj = new PessoaJuridica();
			pj.setCnpj(resultado.getString("cnpj"));
			
			if(pj.getCnpj().equals(CNPJ)){
				JOptionPane.showConfirmDialog(null, " Este CNPJ Já Está Sendo Usado por outro Usuário  !!!!","Atenção", JOptionPane.CLOSED_OPTION,JOptionPane.WARNING_MESSAGE);
			}
		}
		
		conexao.close();
		
	}
}
 